/*
  小跳蛙
  题目描述
    有 n - 1 只小跳蛙在池塘中，依次被编号为 1, 2, ⋯, n−1。
    池塘里有 n 个位置，每一个位置上有一个数字 ai。
    如果 ai = 0，则表示这个位置是一个空位；否则表示这个位置上存在一个编号为 ai 的小跳蛙。
    接下来的 n − 1 分钟，小跳蛙们将进行跳跃。第 i 分钟，编号为 i 的小跳蛙将跳到空位上。

    请你输出 n − 1 分钟后池塘中每个位置的数字，即每个位置是否为空、小跳蛙编号是多少。
  输入描述
    输入共两行。
    第一行一个整数 n。
    第二行 n 个整数 a1, a2, ⋯, an。
  输出描述
    输出一行 n 个整数 a1, a2, ⋯, an。表示 n − 1 分钟后池塘的状态。
  样例1
    输入
      5
      1 2 0 3 4
    输出
      2 3 1 4 0
  提示
   【样例解释】
      第一分钟后：0 2 1 3 4
      第二分钟后：2 0 1 3 4
      第三分钟后：2 3 1 0 4
      第四分钟后：2 3 1 4 0
      因此最终池塘的状态为 2 3 1 4 0
   【数据规模与约定】
      对于 70% 的数据，满足 1 ≤ n ≤ 10^4。
      对于 100% 的数据，满足 1 ≤ n ≤ 10^6，保证序列 a 是一个 0 ∼ n−1 这些数字的排列。
*/

#include <iostream>

using namespace std;

int a[1000001];

int main() {
    int n;

    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    /*
      解题思路:
      1) 由于 n 的取值范围为: 1 <= n <= 10^6,
         如果使用模拟 n 个青蛙跳跃的过程，那么需要使用 2 层 for 循环, 并且每层的查找范围都为 1 ~ n,
         那么循环需要执行 10^6 * 10^6 次, 约等于 10^12 次, > 10^8次, 这样程序就会执行超时!
      2) 本题通过在草稿纸上举例并总结出规律，这样的执行效率会高很多!
         如下编码采用了通过规律直接输出答案的方法!
    */
    for (int i = 1; i <= n; i++) {
        cout << (a[i] + 1) % n << " ";
    }

    return 0;
}